const loaderUtils = require('loader-utils');

function loader(source){
  // 从 webpack 5 开始，this.getOptions 可以获取到 loader 上下文对象。它用来替代来自 loader-utils 中的 getOptions 方法。
  const options = this.getOptions()
  // [ext] 是资源的后缀名
  const filename = loaderUtils.interpolateName(this,'[hash].[ext]',{
    content: source
  })
  // 产生一个文件，第一个参数是文件名，第二个参数是文件内容
  this.emitFile(`${options.outputPath}${filename}`, source)
  return `module.exports = "${options.outputPath}${filename}"`
}
// 将字符串转成二进制
loader.raw = true
module.exports = loader